# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from httplib import HTTPResponse
from django.contrib.auth.models import User
from ask.models import Pessoa, Pergunta
from django.contrib.auth.decorators import login_required

def index(request):
    perguntas = Pergunta.objects.filter(to_pessoa__in = request.user.pessoa.segue.all()).exclude(resposta = None)
    return render_to_response('ask/index.html',locals(),context_instance=RequestContext(request))

def login_(request):
    if request.method == 'POST':
        user = authenticate(username = request.POST.get("login_usuario"), password = request.POST.get("senha_usuario"))
        if user:
            login(request, user)
            return HttpResponseRedirect(reverse("ask.views.index"))
        else:
            mensagem = "Usuário ou senha incorretos"
            return render_to_response("usuario/login.html",locals(),context_instance = RequestContext(request))
    else:
        return render_to_response("usuario/login.html",context_instance = RequestContext(request))
        
def logout_(request):
    logout(request)
    return HttpResponseRedirect(reverse("ask.views.login_"))
        
def cadastrar(request):
    if request.method == 'POST':
        params = request.POST
        user = User.objects.create_user(username = params.get('usuario'), 
                                        email = params.get('email'), 
                                        password = params.get('senha'))
        
        user.first_name = params.get("nome")
        user.save()
        
        imagem_file = request.FILES.get('imagem')
        imagem_file.name = '/imagens/' + imagem_file.name
        pessoa = Pessoa(imagem = imagem_file, usuario = user)
        pessoa.save();
        
        user = authenticate(username = params.get('usuario'), password = params.get('senha'))
        login(request, user)
        
        return HttpResponseRedirect(reverse('ask.views.index'))
    else:
        return render_to_response('usuario/cadastrar.html',context_instance = RequestContext(request))
        
@login_required(login_url='/login/')
def procurar_amigos(request):
    pessoas = Pessoa.objects.exclude(pk__in = request.user.pessoa.segue.all())
    return render_to_response("ask/procurar_amigos.html", locals(),context_instance = RequestContext(request))       

def seguir(request,id_pessoa):
    request.user.pessoa.segue.add(Pessoa.objects.get(pk = id_pessoa))
    return HttpResponseRedirect(request.GET.get("next"))

def deixar_seguir(request, id_pessoa):
    request.user.pessoa.segue.remove(Pessoa.objects.get(pk=id_pessoa))
    return HttpResponseRedirect(reverse('ask.views.listar_amigos'))

def listar_amigos(request):
    seguidos = request.user.pessoa.segue.all()
    seguidores = Pessoa.objects.filter(segue = request.user.pessoa.pk)
    
    return render_to_response('ask/listar_amigos.html', locals(), context_instance=RequestContext(request))
    
def listar_perfil(request, nome_usuario):
    pessoa = Pessoa.objects.get(usuario__username = nome_usuario)
    perguntas = pessoa.pergunta_to.exclude(resposta = None)
    return render_to_response('ask/perfil.html', locals(), context_instance = RequestContext(request))

def perguntar(request,id_pessoa):
    pessoa = Pessoa.objects.get(pk=id_pessoa)
    pergunta = Pergunta(enunciado = request.POST.get("enunciado"), from_pessoa = request.user.pessoa, to_pessoa = pessoa)
    pergunta.save()
    return HttpResponseRedirect(reverse('ask.views.listar_perfil', kwargs={'nome_usuario':pessoa.usuario.username}))

def listar_perguntas(request):
    perguntas = request.user.pessoa.pergunta_to.all().filter(resposta=None)
    return render_to_response('ask/listar_perguntas.html',locals(), context_instance = RequestContext(request))  

def responder(request, id_pergunta):
    pergunta = Pergunta.objects.get(pk = id_pergunta)
    print pergunta, pergunta.enunciado
    pergunta.resposta = request.POST.get("resposta")
    pergunta.save()
    return HttpResponseRedirect(reverse('ask.views.listar_perguntas'))
      
    
    
    
    
    